a. Field of the Invention
The present invention generally pertains to computers and more particularly to simulating attached target devices in order to test host adapter devices used to manage computer interactions with attached target devices.
b. Description of the Background
Small Computer System Interface (SCSI) devices take advantage of technology which follows an industry standard defined by a family of SCSI technical specifications. The family of SCSI technical specifications defines the aspects of hardware and communication necessary for two or more SCSI devices to properly interact. The SCSI specifications define such things as cabling, physical interconnections, communication speed and width, types of SCSI messages, and many more items that are required for SCSI devices to suitably work together. The family of SCSI technical specifications has changed and progressed to match advances in computer technology. To maintain backward compatibility, newer specifications require devices to support aspects of the older specifications, such as communication speed and width, in addition to the new technology requirements. The family of SCSI technical specifications is a product of the T10 technical committee of the International Committee on Information Technology Standards (INCITS) operating under rules that are approved by the American National Standards Institute (ANSI). ANSI is the United States representative on Joint Technical Committee-1 (JTC-1) of the International Standards Organization (ISO) and the International Electrotechnical Commission (IEC). The family of SCSI technical specifications can be purchased from ANSI, 11 West 42nd Street, 13th Floor, New York, N.Y. 10036, telephone number 212-642-4900.
SCSI technology has long been used to create standard attached storage devices as well as other peripheral devices for computer systems. A computer system employs a SCSI host adapter device to manage communications and interactions with SCSI target devices. The SCSI target devices are the attached storage devices and other peripheral devices that add functionality to a computer system. Possible SCSI target devices includes, but is not limited to, hardware such as hard disk drives, CD-ROM drives, CD-RW drives, DVD-ROM drives, DVD-RW drives, magnetic tape drives, printers, and scanners. A SCSI target device supports SCSI target mode communications that allow the SCSI target device to receive and respond to SCSI commands and SCSI task management commands. A SCSI host adapter device also supports SCSI target mode communications to permit the SCSI host adapter device to identify itself on the SCSI communication bus and to respond to SCSI commands and SCSI task management commands issued by other SCSI host adapter devices attached to the SCSI communication bus. In addition to supporting SCSI target mode communications, a SCSI host adapter device also supports SCSI initiator mode communications. The SCSI initiator mode communications allow the SCSI host adapter device to issue SCSI commands and SCSI task management commands, thus allowing a SCSI host adapter device to manage SCSI target devices for integration with the overall computer system.
Typically, a device driver software program manages the communications between the computer system and the SCSI host adapter device. The device driver software program is a software program designed to be the communication interface between a computer Operating System (OS) and a hardware device such as a SCSI host adapter device. The computer operating system normally supplies software hooks to allow the device driver software program to interact with hardware devices and the computer operating system. Interactions with the computer operating system includes the ability to interact with any software programs running within the computer operating system.
The Microsoft Windows family of operating system software products are examples of computer operating systems that support device driver software programs used to interact with peripheral hardware devices. The most recent releases of the Microsoft Windows family of operating system software products includes Windows NT, Windows 2000, and Windows XP. Since the Microsoft Windows operating system products are generally backward compatible, a general reference to the Windows operating system implies references to all Microsoft supported versions of the Windows operating system. The Windows operating system is designed to enable third party software and hardware suppliers to create products that are compatible with the Windows operating system such that a computer system may be made up of hardware devices and software programs supplied by many different sources but compatible with the Windows operating system. The Windows operating system supplies many software tools to assist software programmers in creating software programs that run within the Windows operating system. The Windows registry is a data repository that allows a program to save configuration parameters and other data over computer boot cycles and between program starts and stops. The Windows registry can also be used to allow one program to store data that will is retrieved by another program.
The Windows operating system provides specific software tools for device driver programmers. In Windows terminology, a device driver is also referred to as a Windows mini-port. Typically, the hardware device manufacturer provides an Application Programmer Interface (API) that includes subroutines that assist the device driver programmer in establishing communications with a peripheral hardware device. A family of IOCTL (I/O control) subroutines are supplied by Windows to allow the device driver to communicate with the Windows operating system as well as other programs running within the Windows operating system. Microsoft Corporation is located at One Microsoft Way, Redmond, Wash. 98052-6399, and may be contacted at phone number 800-426-9400, or on the Internet at www.microsoft.com.
When developing a SCSI host adapter device and the device driver software program associated with the SCSI host adapter device, testing both the SCSI host adapter device and the device driver is necessary to guarantee proper operation. This testing is typically performed by purchasing SCSI target devices and connecting the SCSI target devices to the SCSI host adapter device computer system over the SCSI communications bus. As best as possible, the SCSI target devices are connected, disconnected, and operated in a fashion to replicate various possible real world physical configurations and operational response scenarios. To assist developers, some SCSI target device manufacturers have added a test mode to the SCSI target device in order to permit a limited ability to force SCSI target device responses necessary to more fully test a SCSI host adapter device and the associated device driver.